package negocio;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import dto.ItemRemitoDTO;
import dto.RemitoDTO;
import entities.ItemRemitoEntity;
import entities.OperacionMantenimientoEntity;
import entities.RemitoEntity;
public class Remito  
{
	private int id;
	private Cliente cliente;
	private Date fechaEstimada;
	private Date fechaMaxima;
	private String condicionesEspeciales;
	private List<ItemRemito> itemRemito;
	private String tipo;
	
	public Remito(RemitoEntity remito) 
	{
		this.id=remito.getId();
		this.condicionesEspeciales=remito.getCondicionesEspeciales();
		this.fechaEstimada=remito.getFechaEstimada();
		this.fechaMaxima=remito.getFechaMaxima();
		Cliente cl = new Cliente (remito.getCliente());
		this.cliente=cl;
		List<ItemRemitoEntity> irEntL = new ArrayList<ItemRemitoEntity>();
		for (ItemRemitoEntity irEnt : irEntL) 
		{
			ItemRemito ir = new ItemRemito(irEnt);
			this.itemRemito.add(ir);
		}
		this.tipo=remito.getTipo();
	}
	
	public Remito() 
	{
	}
	
	
	
	public Remito(RemitoDTO remito) 
	{
		this.condicionesEspeciales=remito.getCondicionesEspeciales();
		this.fechaEstimada=remito.getFechaEstimada();
		this.fechaMaxima=remito.getFechaMaxima();
		this.id=remito.getId();
		this.tipo=remito.getTipo();
		Cliente c= new Cliente(remito.getCliente());
		this.cliente=c;
		List<ItemRemito> items = new ArrayList<ItemRemito>();
		List<ItemRemitoDTO> itDTO = remito.getItemRemito();
		for (ItemRemitoDTO itemRemitoDTO : itDTO) 
		{
			ItemRemito it = new ItemRemito(itemRemitoDTO);
			items.add(it);
		}
		this.itemRemito=items;		
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public Date getFechaEstimada() {
		return fechaEstimada;
	}
	public void setFechaEstimada(Date fechaEstimada) {
		this.fechaEstimada = fechaEstimada;
	}
	public Date getFechaMaxima() {
		return fechaMaxima;
	}
	public void setFechaMaxima(Date fechaMaxima) {
		this.fechaMaxima = fechaMaxima;
	}
	public String getCondicionesEspeciales() {
		return condicionesEspeciales;
	}
	public void setCondicionesEspeciales(String condicionesEspeciales) {
		this.condicionesEspeciales = condicionesEspeciales;
	}
	public List<ItemRemito> getItemRemito() {
		return itemRemito;
	}
	public void setItemRemito(ItemRemito itemRemito) {
		this.itemRemito = new ArrayList<ItemRemito>();
		this.itemRemito.add(itemRemito);
	}
	public void setItemRemito(List<ItemRemito> itemRemito) {
		this.itemRemito = itemRemito;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public RemitoEntity toEntity()
	{
		RemitoEntity re = new RemitoEntity();
		re.setId(this.getId());
		re.setCondicionesEspeciales(this.condicionesEspeciales);
		re.setFechaEstimada(this.fechaEstimada);
		re.setFechaMaxima(this.fechaMaxima);
		re.setTipo(this.tipo);
		re.setCliente(this.cliente.toEntity());
		List<ItemRemitoEntity> irEnt = new ArrayList<ItemRemitoEntity>();
		for (ItemRemito itemRemito : this.itemRemito) 
		{
			irEnt.add(itemRemito.toEntity());
		}
		re.setItemRemito(irEnt);
		return re;
	}

	public RemitoDTO toDTO() 
	{
		RemitoDTO r = new RemitoDTO();
		r.setCondicionesEspeciales(this.condicionesEspeciales);
		r.setFechaEstimada(this.fechaEstimada);
		r.setFechaMaxima(this.getFechaMaxima());
		r.setId(this.id);
		r.setCliente(this.cliente.toDTO());
		List<ItemRemitoDTO> items = new ArrayList<ItemRemitoDTO>();
		for (ItemRemito ir : this.itemRemito) 
		{
			items.add(ir.toDTO());
		}
		r.setItemRemito(items);
		r.setTipo(this.tipo);
		return r;
	}
}
